#ifndef ShaderProgram_h__
#define ShaderProgram_h__

#include "Platform.h"

namespace le
{
	class Renderer;
}

namespace le
{
	class ShaderProgram
	{
	public:
		ShaderProgram(uint32 vertexShaderId, uint32 fragmentShaderId, uint32 shaderProgramId);
		virtual ~ShaderProgram();

		uint32 GetVertexShaderID() const {return m_VertexShaderID;}
		uint32 GetFragmentShaderID() const {return m_FragmentShaderID; }
		uint32 GetShaderProgramID() const {return m_ShaderProgramID; }

		virtual bool SetShaderVariable(const char* variableName, const float* mat4x4);

	private:
		void InvalidateShader();

	protected:
		uint32 m_VertexShaderID;
		uint32 m_FragmentShaderID;
		uint32 m_ShaderProgramID;
	};
}

#endif // ShaderProgram_h_